package com.hxkj.client.service;

import com.hxkj.domain.po.Article;
import com.hxkj.domain.po.Tags;
import com.platform.common.domain.result.ParameterDataStruct;
import com.platform.common.domain.result.ResultMessageStruct;
import com.platform.common.domain.result.ResultPageStruct;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.List;

/**
 * @InterfaceName TagsServiceClient
 * @Description TODO
 * @Author Mr.zheng
 * @Date 2018/6/7 11:53
 * @Version 1.0
 */
@FeignClient(name = "cms-article")
public interface TagsServiceClient {

    /**
     * @return com.platform.common.domain.result.ResultMessageStruct
     * @author Mr.zheng
     * @Description saveTags 新增tags标签
     * @Date 12:22 2018/6/7
     * @Param [tags]
     **/
    @RequestMapping(value = "/tags/save", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    ResultMessageStruct saveTags(@RequestBody Tags tags) throws Exception;

    /**
     * @return com.platform.common.domain.result.ResultPageStruct<com.hxkj.domain.po.Tags>
     * @author Mr.zheng
     * @Description getTagsList 获取tags标签列表
     * @Date 12:23 2018/6/7
     * @Param [parameterDataStruct]
     **/
    @RequestMapping(value = "/tags/getlist", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    ResultPageStruct<Tags> getTagsList(@RequestBody ParameterDataStruct<Tags> parameterDataStruct) throws Exception;

    /**
     * @return com.platform.common.domain.result.ResultDataStruct<com.hxkj.domain.po.Tags>
     * @author Mr.zheng
     * @Description getTags 根据条件获取tags标签
     * @Date 12:24 2018/6/7
     * @Param [tags]
     **/
    @RequestMapping(value = "/tags/get", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    Tags getTags(@RequestBody Tags tags) throws Exception;

    /**
     * @return com.platform.common.domain.result.ResultMessageStruct
     * @author Mr.zheng
     * @Description removerTags 删除tags标签
     * @Date 12:24 2018/6/7
     * @Param [tags]
     **/
    @RequestMapping(value = "/tags/remove", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    ResultMessageStruct removeTags(@RequestBody Tags tags) throws Exception;

    /**
     * @return com.platform.common.domain.result.ResultMessageStruct
     * @author Mr.zheng
     * @Description modifyTags 修改tags标签
     * @Date 12:26 2018/6/7
     * @Param [tags]
     **/
    @RequestMapping(value = "/tags/modify", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    ResultMessageStruct modifyTags(@RequestBody Tags tags) throws Exception;

    /**
     * @return java.util.List<com.hxkj.domain.po.Tags>
     * @author Mr.zheng
     * @Description getShowTagsList 获取tags标签下拉框
     * @Date 15:19 2018/6/29
     * @Param [tags]
     **/
    @RequestMapping(value = "/tags/getshowlist", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    List<Tags> getShowTagsList(@RequestBody Tags tags) throws Exception;

    /**
     * @return java.util.concurrent.Callable<java.util.List   <   com.hxkj.domain.po.Tags>>
     * @author Mr.zheng
     * @Description getQuoteCountTagsList 获取热点标签根据热点排序
     * @Date 8:51 2018/7/12
     * @Param [tags]
     **/
    @RequestMapping(value = "/tags/getQuoteCountList", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    List<Tags> getQuoteCountTagsList(@RequestBody Tags tags) throws Exception;

    /**
     * @return java.util.concurrent.Callable<java.util.List   <   com.hxkj.domain.po.Tags>>
     * @author zzx
     * @Description getQuoteCountTagsList获取热度前 20 的tags标签
     * @Date 8:51 2018/7/12
     * @Param [tags]
     **/
    @RequestMapping(value = "/tags/getTagsListByQuoteCount", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    List<Tags> getTagsListByQuoteCount(@RequestBody Tags tags) throws Exception;

    /**
     * @return java.util.concurrent.Callable<java.util.List   <   com.hxkj.domain.po.Tags>>
     * @author zzx
     * @Description 根据tagId  查询文章列表
     * @Date 8:51 2018/7/12
     * @Param [tags]
     **/
    @RequestMapping(value = "/tags/getArticleByTag", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    List<Article> getArticleByTag(@RequestBody Tags tags) throws Exception;


    /**
     * @return java.util.List<com.hxkj.domain.po.Tags>
     * @author Mr.zheng
     * @Description getHotTagsList 获取热词标签
     * @Date 11:59 2018/7/20
     * @Param [tags]
     **/
    @RequestMapping(value = "/tags/getHotTagsList", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    ResultPageStruct<Tags> getHotTagsList(@RequestBody ParameterDataStruct<Tags> parameterDataStruct) throws Exception;


    /**
     * @return java.util.List<com.hxkj.domain.po.Tags>
     * @author Mr.zheng
     * @Description getHotTagsList 获取热门文章的标签列表
     * @Date 11:59 2018/7/20
     * @Param [tags]
     **/
    @RequestMapping(value = "/tags/getHotArticleAsTagsList", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
    List<Tags> getHotArticleAsTagsList(@RequestBody Article article) throws Exception;

}
